import 'package:get/get.dart';

import '../../../routes/app_pages.dart';
import '../../../utils/storage_service.dart';

class SplashController extends GetxController {
  final StorageService _storageService = Get.find<StorageService>();
  
  // 启动状态
  final RxBool isLoading = true.obs;
  final RxString loadingText = '正在初始化...'.obs;
  
  @override
  void onInit() {
    super.onInit();
    _initializeApp();
  }
  
  /// 初始化应用
  Future<void> _initializeApp() async {
    try {
      // 更新加载状态
      loadingText.value = '正在加载配置...';
      await Future.delayed(const Duration(milliseconds: 500));
      
      // 初始化存储服务
      loadingText.value = '正在初始化服务...';
      // StorageService已经通过Get.find初始化，无需再次初始化
      await Future.delayed(const Duration(milliseconds: 500));
      
      // 检查首次启动
      loadingText.value = '正在检查设置...';
      await _checkFirstLaunch();
      await Future.delayed(const Duration(milliseconds: 500));
      
      // 预加载资源
      loadingText.value = '正在加载资源...';
      await _preloadResources();
      await Future.delayed(const Duration(milliseconds: 500));
      
      // 完成初始化
      loadingText.value = '初始化完成';
      isLoading.value = false;
      
      // 延迟后跳转到主页面
      await Future.delayed(const Duration(milliseconds: 800));
      _navigateToMainScreen();
      
    } catch (e) {
      // 处理初始化错误
      loadingText.value = '初始化失败';
      Get.snackbar(
        '启动错误',
        '应用初始化失败: ${e.toString()}',
        snackPosition: SnackPosition.BOTTOM,
      );
      
      // 即使出错也要跳转，避免卡在启动页
      await Future.delayed(const Duration(milliseconds: 1000));
      _navigateToMainScreen();
    }
  }
  
  /// 检查首次启动
  Future<void> _checkFirstLaunch() async {
    final isFirstLaunch = await _storageService.getBool('is_first_launch') ?? true;
    
    if (isFirstLaunch) {
      // 设置默认配置
      await _setDefaultSettings();
      await _storageService.setBool('is_first_launch', false);
    }
  }
  
  /// 设置默认配置
  Future<void> _setDefaultSettings() async {
    // 网络设置
    await _storageService.setBool('network_cache_enabled', true);
    await _storageService.setBool('network_offline_mode', false);
    
    // 应用默认设置
    await _storageService.setBool('dark_mode', false);
    await _storageService.setString('language', 'zh_CN');
    await _storageService.setBool('notifications_enabled', true);
  }
  
  /// 预加载资源
  Future<void> _preloadResources() async {
    // 这里可以预加载一些必要的资源
    // 比如缓存图片、初始化网络配置等
    await Future.delayed(const Duration(milliseconds: 300));
  }
  
  /// 跳转到主屏幕
  void _navigateToMainScreen() {
    Get.offAllNamed(Routes.MAIN_SCREEN);
  }
  
  /// 手动跳过启动页
  void skipSplash() {
    _navigateToMainScreen();
  }
}